package com.silence.gmall.product.controller;

import com.silence.gmall.annotations.Log;
import com.silence.gmall.base.Result;
import com.silence.gmall.product.domain.repository.BaseCategory1Repository;
import com.silence.gmall.product.domain.repository.BaseCategory2Repository;
import com.silence.gmall.product.domain.repository.BaseCategory3Repository;
import com.silence.gmall.product.dto.BaseCategory1Dto;
import com.silence.gmall.product.dto.BaseCategory2Dto;
import com.silence.gmall.product.dto.BaseCategory3Dto;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Author silence
 * @Description 一级分类表控制器
 * @Date 2025-08-17 16:28:16
 */
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/admin/product")
public class CategoryController {

    /**
     * BaseCategory1Repository 的注入
     */
    private final BaseCategory1Repository baseCategory1Repository;

    /**
     * BaseCategory2Repository 的注入
     */
    private final BaseCategory2Repository baseCategory2Repository;

    /**
     * BaseCategory3Repository 的注入
     */
    private final BaseCategory3Repository baseCategory3Repository;
    

    /**
     * 获取一级分类列表
     *
     * @return 一级分类列表
     */
    @GetMapping("/getCategory1")
    @Log(interfaceName = "获取一级分类列表")
    public Result<List<BaseCategory1Dto>> getCategory1() {
        return Result.build(baseCategory1Repository.listBaseCategory1());
    }

    /**
     * 获取二级分类列表
     *
     * @param category1Id 一级分类ID
     * @return 二级分类列表
     */
    @GetMapping("/getCategory2/{category1Id}")
    @Log(interfaceName = "获取二级分类列表")
    public Result<List<BaseCategory2Dto>> getCategory2(@PathVariable("category1Id") String category1Id) {
        return Result.build(baseCategory2Repository.listBaseCategory2(category1Id));
    }

    /**
     * 获取三级分类列表
     *
     * @param category2Id 二级分类ID
     * @return 三级分类列表
     */
    @GetMapping("/getCategory3/{category2Id}")
    @Log(interfaceName = "获取三级分类列表")
    public Result<List<BaseCategory3Dto>> getCategory3(@PathVariable("category2Id") String category2Id) {
        return Result.build(baseCategory3Repository.listBaseCategory3(category2Id));
    }
}